package com.hyny.framework.platform.system.sucurity;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.hyny.framework.platform.system.entity.vo.LoginVO;
import com.hyny.framework.platform.system.utils.SecurityUtil;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

/**
 * 自定义权限处理类
 */
@Service("hyP")
public class PermissionHandler  {


    /**
     * 验证用户是否具备某权限
     * @param permission 不定参数 权限字段
     * @return 用户是否具备访问该接口权限
     */
    public boolean hasAuthority(String... permission) {

        LoginVO loginVO = SecurityUtil.getLoginUser();
        if (ObjectUtil.isNull(loginVO)) {//判断是否登录
            if (StrUtil.equals(loginVO.getUsername(), "admin")) { // 管理员拥有最高权限
                return true;
            }
            if (CollectionUtils.isEmpty(loginVO.getPermissions())) { //判断当前用户是否有权限信息
                return false;
            }
            for (int i = 0; i < permission.length; i++) {//遍历权限
                if (StrUtil.isEmpty(permission[i])) {//校验权限参数是否为空，为空继续循环
                    continue;
                } else if (loginVO.getPermissions().contains(permission[i])) {//判断当前用户是否包含当前权限
                    return true;
                }
            }
        }
        return false;
    }
}
